#ifndef AccessMembers_First
#define AccessMembers_First
#ifdef __GNUG__
#pragma interface
#endif

#include "Types.h"
#include "ET_varargs.h"

class Class;
class Object;

//---- AccessMembers -----------------------------------------------------------
//     access the instance variables of an Object

class AccessMembers {
protected:
	AccessMembers();
	virtual ~AccessMembers();
	//--- overridden to get access to instance variables
public:
	virtual void Member(char *name, int offset, int lenOrOffset, int type,
				Class *cla, bool global, bool lenglobal);
	virtual void ClassName(char *name);
	void ScanMembers(Object*, int first, va_list, int);
};

//---- AccessObjPtrs -----------------------------------------------------------
//     access Object* of an Object

class AccessObjPtrs: public AccessMembers {
protected:
	Object *inObject;
	virtual void FoundPointer(Object *op, char*, int, bool global);
public:
	AccessObjPtrs(Object *op= 0);
	void ForObject(Object *op);
	void Member(char *name, int offset, int offsetOrLen, int type,
					Class *cl, bool global, bool lenglobal);
};

#endif
